<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Javascript中的算术</title>
</head>

<body>
  <script>
    // 以10为底100的对数
    var res = Math.log(100) / Math.LN10
    console.log(res);
    // 以2为底512的对数
    var res = Math.log(512) / Math.LN2
    console.log(res);
    // e:自然对数的底数
    var res = Math.E
    console.log(res);
    // Math.E的平方
    var res = Math.exp(2)
    console.log(res);

    var res = Math.log(3)
    console.log(res);

    // ln1+x
    var res = Math.log1p(2)
    console.log(res);
    // Math.exp(x)-1 Math.log1p(x)的逆计算
    var res = Math.expm1(2)
    console.log(res);


    console.log(1 / 0); //Infinity 因为太大而无法表示的正数
    console.log(Number.POSITIVE_INFINITY);//同上
    console.log(Number.MAX_VALUE * 2);//Infinity；溢出

    console.log(-1 / 0);//Infinity 因为太大而无法表示的负数
    console.log(Number.NEGATIVE_INFINITY);//同上
    console.log(-Number.MAX_VALUE * 2);//-Infinity；溢出

    console.log(0 / 0); // NAN 非数值
    console.log(Infinity / 'wct');// NAN
    console.log(Infinity / Infinity);// NAN
    console.log(Number.NaN);//同上

    console.log(Number.MIN_VALUE / 2);//0：下溢出
    console.log(-Number.MIN_VALUE / 2);//-0：下溢出
    console.log(-1 / Infinity);//-0 下溢出
    console.log(-1 / Infinity === Number.MIN_VALUE / 2);//true 0和-0没区别
    // 但是除了作为除数使用，几乎无法区分这0和-0两个值
    let zero = 0
    let zero1 = -0
    console.log(zero == zero1);
    console.log(1 / zero);//Infinity
    console.log(1 / zero1);//-Infinity
    console.log(1 / zero === 1 / zero1); //false Infinity不等于-Infinity


    console.log(isNaN(Infinity / Infinity));//true 是NAN返回true
    console.log(Number.isNaN(Infinity / Infinity));//true 是NAN返回true
    console.log(isNaN('www'));//true 会自动转化数值后判断 是NAN返回true
    console.log(Number.isNaN('www'));//false 这里不会转化数值而直接判断nan 就是说Infinity / Infinity本身就是number类型的nan  而字符串本身就不是number的nan  Number.isNaN判断nan更严格 类似于==与===的区别

    console.log(Infinity / Infinity != Infinity / Infinity); //true  非数值NAN不等于本身  用==返回false

    console.log(Number.isFinite(Infinity)); //不是NaN、Infinity、-Infinity才会返回true
    console.log(isFinite(Infinity));

  </script>
</body>

</html>